package chemtools_logica.LN.SFBean;

import chemtools_logica.BDL.IR.BDL_SFEventoxusuarioRemote;
import chemtools_logica.BDL.SFBean.BDL_SFEventoBean;
import chemtools_logica.BDL.SFBean.BDL_SFEventoxusuarioBean;

import chemtools_logica.Beans.AlmacenBean;
import chemtools_logica.Beans.EventoBean;
import chemtools_logica.Beans.EventoxinsumoBean;
import chemtools_logica.Beans.EventoxusuarioBean;

import chemtools_logica.Beans.GastoBean;

import chemtools_logica.Entidades.Almacen;
import chemtools_logica.Entidades.Evento;
import chemtools_logica.Entidades.Eventoxinsumo;
import chemtools_logica.Entidades.Eventoxusuario;

import chemtools_logica.Entidades.Gasto;

import chemtools_logica.Entidades.Tipoproductoxordenproduccion;

import chemtools_logica.Entidades.Usuario;

import chemtools_logica.LN.IL.LN_SFEventoxusuarioLocal;
import chemtools_logica.LN.IR.LN_SFEventoxusuarioRemote;

import java.util.ArrayList;
import java.util.List;

import javax.annotation.Resource;

import javax.ejb.EJB;
import javax.ejb.SessionContext;
import javax.ejb.Stateless;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

@Stateless(name = "LN_SFEventoxusuario", mappedName = "map-LN_SFEventoxusuario")
public class LN_SFEventoxusuarioBean implements LN_SFEventoxusuarioRemote, LN_SFEventoxusuarioLocal {
    @Resource
    SessionContext sessionContext;
    @PersistenceContext(unitName = "Chemtools_Logica")
    private EntityManager em;
    
    @EJB
    BDL_SFEventoxusuarioRemote  bDL_SFEventoxusuarioRemote;

    public LN_SFEventoxusuarioBean() {
    }
    
    public List<EventoxusuarioBean> getAllEventosxusuario(){
        List<Eventoxusuario> listaEntidad = bDL_SFEventoxusuarioRemote.getEventoxusuarioFindAll();
        List<EventoxusuarioBean> listaBean = new ArrayList<EventoxusuarioBean>();
        
        for(Eventoxusuario entidad : listaEntidad){
            EventoxusuarioBean bean  = new EventoxusuarioBean();
            bean = convertEntityToBean(entidad);
            
            listaBean.add(bean);
        }
        
        return listaBean;
    }
    
    public EventoxusuarioBean convertEntityToBean(Eventoxusuario entidad){
        EventoxusuarioBean bean = new EventoxusuarioBean();
        
        bean.setComentario(entidad.getComentario());
        bean.setFecha(entidad.getFecha());
        
            bean.setIdUsuario(entidad.getUsuario().getIdUsuario());
            bean.setNombreUsuario(entidad.getUsuario().getNombre_Usuario());
            
            bean.setIdEvento(entidad.getEvento().getIdEvento());
            bean.setNombreEvento(entidad.getEvento().getDescripcion());
        return bean;
    }
    
    public void addEventoxusuario(EventoxusuarioBean bean){
        Eventoxusuario entidad = new Eventoxusuario();
        entidad = convertBeantoEntity(bean,0);
        bDL_SFEventoxusuarioRemote.persistEventoxusuario(entidad);
    }
    
    //0 = EDITAR, 1 = AGREGAR
    public Eventoxusuario convertBeantoEntity(EventoxusuarioBean bean, int opc){
        Eventoxusuario entidadEventoxusuario= new Eventoxusuario();
        Evento entidadEvento = new Evento();
        Usuario entidadUsuario = new Usuario();
            
        entidadEventoxusuario.setComentario(bean.getComentario());
        entidadEventoxusuario.setFecha(bean.getFecha());
        
        if(opc == 0){
            entidadEvento.setIdEvento(bean.getIdEvento());
            entidadUsuario.setIdUsuario(bean.getIdUsuario());
        }
            entidadEventoxusuario.setEvento(entidadEvento);
            entidadEventoxusuario.setUsuario(entidadUsuario);
            
        return entidadEventoxusuario;
    }
    public List<EventoxusuarioBean> getEventoxUsuarioByUsuario(int idUsuario){
        List<EventoxusuarioBean> eEventoxusurioBean = new ArrayList<EventoxusuarioBean>();
        List<Eventoxusuario> eEventoxUsuarioEntidad = bDL_SFEventoxusuarioRemote.getEventoxUsuarioByUsuario(idUsuario);
        
        for(Eventoxusuario entidad : eEventoxUsuarioEntidad){
            EventoxusuarioBean bean = new EventoxusuarioBean();
                bean.setIdEvento(entidad.getEvento().getIdEvento());
                bean.setNombreEvento(entidad.getEvento().getDescripcion());
                bean.setIdUsuario(entidad.getUsuario().getIdUsuario());
                bean.setNombreUsuario(entidad.getUsuario().getNombre_Usuario());
            bean.setFecha(entidad.getFecha());
            bean.setComentario(entidad.getComentario());
            
            eEventoxusurioBean.add(bean);
        }
        return eEventoxusurioBean;
        
    }
    public List<Eventoxusuario> existeEvento(EventoxusuarioBean eu){
        return bDL_SFEventoxusuarioRemote.existeEvento(eu);
        }
}
